import router from "@/router";
import storage from "./storage";
import store from "@/store";
//判断本地是否有token,如果有，那么就放行

router.beforeEach((to, from, next) => {
  //to 目标路由对象
  //from 原路由对象
  //next 是个函数。调用之后，可以理解为放行
  let token = storage.get("qf-token");
  if (token) {
    //要判断是否有用户菜单
    if (!store.state.permission.userMenu.length) {
      //发起请求，获取远程菜单
      store
        .dispatch("permission/FETCH_MENU_LIST")
        //这里要注意，next里面要传参数即要进入的页面的路由信息，因为next传参数后，当前要进入的路由会被废止，转而进入参数对应的路由，虽然是同一个路由，这么做主要是为了确保addRoute生效了，并且不产生历史记录
        .then(() => {
          next({ path: to.path, replace: true });
        });
    } else {
      next();
    }
  } else {
    //没有token
    //1.访问的是登入页，放行
    if (to.path == "/login") {
      next();
    } else {
      //2.访问的不是登入页，强行调回登入页
      next({ path: "/login" });
    }
  }
  next();
});
export default router;
